perm filename ERRATA.TXT[TEX,DEK]28 blob sn#641486 filedate 1982-02-13 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	This is a list of all errors in the September 1978 TEX user manual that
C00009 00003	Extensions to TEX made since the November printing of the manual:
C00014 00004	Corrections noted since the November 1978 printing:
C00019 00005	Important changes made to TEX on February 25, 1979:
C00023 00006	New extensions to TEX subsequent to the April printing of the manual.
C00027 00007	Changes made subsequent to the Digital Press edition of the manual (Dec 1979)
C00036 00008	TEX 80: the last extensions to TEX before 1990
C00052 00009	Changes since October 1, 1980 (when a hardcopy version of this ERRATA file
C00080 00010	This page describes differences between TEX82, which is the portable
C00131 00011	IMPORTANT NOTE ABOUT A CHANGE TO BASIC.TEX
C00134 ENDMK
C⊗;
This is a list of all errors in the September 1978 TEX user manual that
were known on November 4, 1978. It also includes a few things that were
omitted in September. All these changes (and only these) have been
incorporated into the November 1978 manual.

Title page, change date to "November 1978 (second printing)" and change 
"draft" to "drafts" in the first line of the footnote.

Page 26, line 4, delete "of the second paragraph".

Page 29, line 13, change "later.)" to "later. A list of control sequences for
special symbols appears in Appendix F.)

Page 40, line 15
(one centimeter equals 26.600 Didot points)

Page 32, line 18, change "12" to "11".

Page 59, line 4, insert a ")" after this line.

Page 61, line 28, insert a "$" before the pound sterling sign

Page 61, line 30, change ", and" to ", ``$\$$'', and"

Page 82, line 13, append this to the paragraph: "Another case is a formula
like n/log n, where a negative thin space has been inserted after the /.)".

Page 102, line 6, append this to the paragraph: "The control sequences
\vcenter and \vtop are also useful for box positioning (see Chapter 26)."

Page 106, line 17, change "instead of ``$\ctr{#}$''" to "instead
of ``\ctr{$#$}''".

Page 106, last three lines, change "processed; you might ... appropriate \def."
to "processed.".

Page 135, change the first 7 lines to the following:

  based only on the current style, regardless of the sizes of numerator and
  denominator.

    / \vcenter \
  *<            >{<vlist>}      Append a centered or top-adjusted box.
    \   \vtop  /
  The specified vertical list is constructed in restricted vertical mode, then
  it is \vjusted and the resulting box is moved up or down so that (\vcenter)
  it is centered vertically just as large delimiters are, or (\vtop) the
  baseline of the topmost box in the vertical list coincides with the baseline
  of the formula.  Then TEX resumes its activities in math mode.

Page 158, line 16, change ". (We" to ".\xskip (We".

Page 158, new paragraph inserted before the 4th-last line on this page:
   * Within a paragraph, type ``\xskip'' before and after parenthesized
  sentences.  (For example, there is an \xskip in the paragraph you are now 
  reading, and in algstep E1 above.)

(The convention just explained has also been introduced into the entire TEX
manual.)

Page 159, replace last two paragraphs by one paragraph, to wit:
     If the exercise contains a ``hint'' within a paragraph, you type
  ``\xskip[{\sl Hint:} ''; as usual, there should be no space before \xskip.

Page 162, line 4, change "Addison-Wesley's" to "the publisher's".

Page 165, line 15, change "4.5" to "4.625".

Page 165, line 23, change "4" to "4.25".

Page 182, line 6, change "or XYZages" to "XYZages, or XYZest"

Page 182, lines 14 and 15, change "-xe, or -xye, where x and y" to
	"-Xe, or -XYe, where X and Y"

Page 182, line 18, new sentence appended to this paragraph:
	"Similarly, final syllables of the form -Xed or -XYed (except -ized)
	are also disregarded."

Page 185, line 22, delete "guess-work"

Page 186, line 7, change "prob-a-bil-ity" to "prob-abil-ity".

Page 187, index entry for Bibliographic..., change "14" to "15".

Page 189, index entry for \deg, add page 164.

Page 195, delete 15th line in left-hand column.

Page 195, index entry for \spose, add page 39.

Page 196, index entry for \vcenter, add page 102.

Page 196, new index entry:
  \vtop (make <vlist> box using top baseline), 102, 135.

Page 196, index entry for \xskip, change "159" to "158--160".

Page 196, index entries for \yskip and \yyskip, change "158--159" and "158"
to "159".

Page 197, index entry for \$, add page 61.

Page 198, the TEX logo is too small, each time it appears on this page.

Extensions to TEX made since the November printing of the manual:

1. Several new <dimenparam>s have joined \hsize, \vsize, \topbaseline, etc.,
namely \lineskiplimit, \mathsurround, and \varunit.
By typing "\lineskiplimit <dimen>" you specify a dimension p such that
\lineskip glue is used as the interline glue if and only if x-h-d < p, in
the notation of Chapter 15.
By typing "\mathsurround <dimen>" you specify an amount
of blank space to be inserted at the left and right of any formula
embedded in text (i.e., formulas delimited by $ and $).
By typing "\varunit <dimen>" you specify the current value of a
variable-size unit; the code "vu" denotes such relative units in a <dimen>
specification. For example, after you define "\varunit 2pt", a <dimen>
of "7vu" would stand for 14 points. When TEX begins, the values of
\lineskiplimit, \mathsurround, and \varunit are 0pt,
0pt, and 1pt, respectively.

2. There is a new option to \advcount: If you type "\advcount <digit> by
<number>" the specified counter is increased by the specified number. (When
the "by" option is omitted, the counter is increased by plus-or-minus one as
presently.)  For example, "\advcount 0 by - \count 1" subtracts counter 1 from
counter 0.

3. The control sequence \unskip can be used in horizontal mode (or restricted
horizontal mode) to delete one glob of glue, if this glue was the last item
added to the horizontal list. The main use of this is to remove an unwanted
space that may have just appeared. For example, in a macro expansion the string
"#1\unskip" denotes parameter #1 with a final blank space (or other glue)
removed, if #1 ends with a blank space (or other glue).

4. Typing "\uppercase{<token list>}" in horizontal mode will change all
lower-case letters of the token list into upper case. (But not the letters of
control sequences.) Similarly, "\lowercase{<token list>}" changes upper-case
letters into lower case.

5. Typing "\xdef<control sequence>{<result text>}" is like
"\gdef<control sequence>{<result text>}" except that definitions in the result
text are expanded. For example, "\xdef\z{\z\y}" will append the current result
text of macro \y to the current result text of macro \z. You can also use \xdef
to expand \counts (as well as \topmarks, etc., in \output routines).

6. The new control sequence \ifpos is analogous to \ifeven; the
\else code is evaluated only if the specified counter is zero or negative.
For example, you can use \ifpos to test if a counter is zero in the
following way:

\def\neg#1{\setcount#1-\count#1}
\def\ifzero#1#2\else#3{\ifpos#1{#3}\else{\neg#1
    \ifpos#1{\neg#1 #3}\else{\neg#1 #2}}}

7. A new unit has been added: "em" equals one quad in the current font.

Corrections noted since the November 1978 printing:

Page 14, line 15, change "TEXes" to "TEXs".

Page 22, line 7, change "reading from, if any." to: "reading. (Don't do this
unless there is such a file.)"

Page 56, line 14, change "n≥2" to "n≥1".

Page 83, line 3, change "it is reclassified as Ord." to "Bins are reclassified
as Ords, from left to right."

Page 101, append a new sentence to the second dangerous bend:
However, all other parameters affecting the setting of the boxed paragraph
(the baseline skip, raggedness, etc.) should be set up {\sl before} the
\hbox par.

Page 114, lines -2 and -1, change "\hjsut" to "\hbx" (thrice)

Page 118, line 23, change "final page is" to "page is finally"

Page 127, line 21, change "final page is" to "page is finally"

Page 138 (AMS version), line -4, move "nother example." one space left.

Page 140, line -13, change "Extra ⊗" to "Extra alignment tab".

Page 145, a new error message:
Warning: Long input line has been broken.
Your input file contained a very long sequence of characters between
carriage returns. TEX arbitrarily broke it after 150 characters.

Page 150, lines 4-6 of the code in answer 23.2 should be:
        \def\lead{ \leaders\hrule\hfill\ }
        \hbox to 4.5in{\ifeven0{\:b\count0\lead\topmark}
          \else{\:b\topmark\lead\count0}}}

Page 152, replace lines -8 and -7 by:
\def\spose#1{\hbox to 0pt{#1\hskip0pt minus10000000pt}}

Page 165, replace the various definitions of "\9" by the single
definition "\def\9{\hskip .5em}", putting the latter just before the definition
of \xskip.

Page 166, in the definition of \dimsectionbegin:
Change "\yyskip" to "\sectionskip".

Page 178, the paragraph of text, delete "But watch out: ... Appendix B.)"

Page 181, line 18, change "word," to "word, and".

Page 184, line 5, add "gold-en".

Page 185, line 21, change "ex-press-ible" to "ex-press-*i*ble".

Page 186, line 11, change "com-put-a-*bil-ity" to "com-put-a*bil-ity".

Pages 187-197, "see" and "see also" are in the wrong font in the AMS
     version (Xerox software bug!)

Page 190, \Fscr entry should be on a line by itself.

Page 190, \halign entry, change "135" to "136".

Page 191, Knuth entry, change "14" to "15".

Page 194, \Qscr entry is not in alphabetic order.

Page 194, add "Roman numerals, 111."

Page 195, Spacing in math formulas,
	tables, 81, 83.

Page 196, last entry in v's has the "vu" entry run into the previous one.

Page 196, entry for \xdef is out of alphabetical order.

Page 197, add: "' (octal number), 34."

Important changes made to TEX on February 25, 1979:

The American Math Society will be printing copies of the TEX manual
with all the above bugs cleaned up, and on this occasion it was the
last chance to change TEX before changes became unwieldy. Thus, Knuth
decided to make a couple improvements, to wit:

1. The control sequences \hjust and \vjust are henceforth changed to \hbox and
\vbox.  (This should cause you little or no trouble with MSs already typed,
simply insert "\def\hjust{\hbox}\def\vjust{\vbox}" at the beginning of your
file.)

2. The old kludge about \hjust to ...{   } making a boxed paragraph if the
contents were too large has been replaced by a far better convention.
This change will make TEX balk on some manuscripts it previously handled
(e.g. it might now say "Overfull box, 1138.74 points too wide"), but 
only a few changes will really be necessary in your files.

Here are the new rules (replacing the previous rule on page 101):

*  You can also get the effect of paragraphing and line-breaking with
   \hbox, in the following way: If you give the instruction "\hbox par<dimen>",
TEX will use its paragraph line-breaking routine to convert the horizontal list
into one or more lines of the specified width. In this case the \hbox will
actually result in a box formed from a {\sl vertical} list of horizontal lists
of the desired width. The boxed paragraph that you get is not indented.

		For example, the box you are now
		reading was made by typing "\hbox
		par 156pt{For example, the box
		... five lines.}" and TEX broke
		it into five lines.

*  If you specify hanging indentation with such a boxed paragraph, it applies
   to the box and not to the paragraph (if any) containing the box. For
example,

	\hbox par 200pt{\hangindent 10 pt <text >}

will put the specified text into a box 200 points wide, where all lines after
the first are indented by 10 points at the left.

New extensions to TEX subsequent to the April printing of the manual.

\chcode has been extended to give you the opportunity to change TEX's math mode
conversion (Appendix F8). Type "\chcode <ascii code plus '200> ← '<type><char>"
where <type> is 0,1,2,3,4,5,6 for Ord,Op,Bin,Rel,Open,Close,Punct,
respectively, and <char> is the three-octal-digit code. 
For example, a colon (ascii code '072) is normally treated by TEX as Ord'072,
according to Appendix F8. It turns out this is usually a mistake in computer
science papers, it should rather be Rel'072 (treated as a relation box with
respect to spacing in formulas, see Chapter 18.4). You can get this by
typing "\chcode'272←'3072". (Then formulas like "$x:=x+1$" and "$f:X\to Y$"
will come out properly.)

Three new units of measure are allowed: wd<digit>, ht<digit>, dp<digit>,
denoting the width, height, and depth of a saved box. For example, if you
type "\save5\hbox{k}\hbox to 2 wd5{}" you get an empty box that is twice the
width of the letter k in the current font.

You can use a single letter where TEX expects a <number>; the result is
the ascii code of that letter. For example, the definition of \max in
Appendix B would now more properly be 
	\def\max{\mathop{\char m \char a \char x}}  .
This works only for letters (characters of type 11, see Chapter 7).

The new control sequence \firstmark is allowed in output routines. It
equals the first mark on the page, if any, otherwise it has the
common value of \topmark and \botmark.

The new control sequences \ifvmode, \ifhmode, \ifmmode (analogous to other
\if's) select text based on the current mode.

The new control sequences \hfil, \hfilneg, \hss  are short for
\hskip 0pt plus 100000pt,  \hskip 0pt plus -100000pt,
\hskip 0pt plus 100000pt minus 100000pt, respectively,
and they take less TEX memory space. The vertical analogs are \vfil, \vfilneg,
and \vss. Examples of use: "\vfil\penalty0\vfilneg" specifies an optional
page break, with a "short" page if the break occurs; "\penalty1000\hfilneg\ "
at the end of a paragraph will force the last line of the paragraph to be
right justified (it cancels the paragraph-fill glue supplied automatically by
TEX).

Control sequences of any length are now remembered in full; the seven-letter
truncation mentioned in Chapter 3 no longer happens.

Changes made subsequent to the Digital Press edition of the manual (Dec 1979)

Page 26, line -8, should be
	\hsize 1 in \jpar 1000000 \ragged 1000

Page 27, lines 6 and 7, should be
...trline #1->\hbox to size{\hss #1
				   \hss }
Page 27, lines 14 and 15 are replaced by a single line
	\hbox to size{\hss#1\hss}
Also delete "and followed" from line 19, and change "\hskip etc." on line 21 to
"\hss }".

Page 39, line -9, change "1.667pt" to ".33ex";
on line -7, change "2.5pt" to ".5ex";
and replace lines -6 through -4 by: "(This is for Computer Modern fonts. Other
font designs may require different positioning; you will probably be able to find
somebody who has worked out control sequences that you can use for any necessary
accent on any particular alphabet.)"

Page 40, another new unit
	ex	One "xheight" of space in the current font

Page 41, add a new sentence after "devices." on line 13:
If you want to avoid this inflation factor, you can say
"true" just before the unit; e.g., "4truein". (No space after "true".)

Page 50, line 7 should say
	100000 pt, which is about 115 feet;
and change "1000cm" to "100000pt" on lines 9 and 10.

Page 92, line 12, change "formula is placed flush left" to:
formula is centered between the left margin and the equation number, unless glue
appears at the beginning of the formula; if such glue has been explicitly specified,
it is placed flush left

Page 95, the two-line displays on this page should have had 2pt extra
space between the lines.

Page 99, line 1, "within" should be "with"

Page 99, line 16, delete the sentence "The dimensions you specify should not
be negative."

Page 102, line 4, change to
\def\TEX{\hbox{\:aT\hskip-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}

Page 116, line -3, insert "or \ " before the comma.

Page 120 and 129, add a new entry to the list of internal parameters:
	10	dumplength	500	Appendix X

Page 142, lines 12-14, replace "But be careful: ... just now." by:
Remember that blank space after the name.

Page 151, use simpler definitions for \rjustline and \ctrline:
\def\rjustline#1{\hbox to size{\hss #1}}
\def\ctrline#1{\hbox to size{\hss #1\hss}}

Page 152, a new definition of \twoline replaces the old:
\def\twoline#1#2#3{\vbox{\hbox to size{$\quad\dispstyle{#1}$\hfill}
    \vskip#2\hbox to size{\hfill$\dispstyle{#3}\quad$}}}
Also we simplify the definitions of \chop and \spose:
\def\chop to#1pt#2{\save0\hbox{$\dispstyle{#2}$}\hbox{\lower#1pt\null
    \vbox to 1ht0{\box0\vss}}}
\def\spose#1{\hbox to 0pt{#1\hss}}

Page 163, line 16, put "}" after "<last line>\cr"

Page 170, ...The same codes are used for slanted roman fonts like cms10, and
for text italic fonts like cmti10.

Page 171, line 3, "except for \b, \l, \o, \t, \H, and"

Page 171, line 7, change the "except for" list to include underscore, and exclude
the less-than-or-equal-to and greater-than-or-equal-to signs.

Page 171, the typewriter type code now has an underline in position '032,
suitable for making less-than-or-equal-to and greater-than-or-equal-to signs
from < and >. Position '033 is the German ss as on page 170.

Page 172, delete the sentence "The same codes apply...manual)."

Page 172, codes '134, '136, '137 become undefined.

Pages 184-185, delete these words from the exception dictionary (since it turns
out they aren't hyphenated badly after all): harangue, meringue, tongue,
senseless, morgue, torque, unsearchable.

Page 186, new special exceptions: cat-e-go-ry de-vel-op prob-lem-atic
	pro-gram-ming ref-er-enc*e

Page 188r, cmti10, change "172" to "170". Also delete the entry for cmu10.

Page 188r, add pp. 116 and 201 to the Control space entry.

Page 189r, new entry: Dump length, 201.

Page 190l, add pp. 116 and 201 to the Escape space entry.

Page 190l, new entry: \ETC, 201.

Page 190l, delete "Footnotes, 164."  

Page 195r, add p. 102 to the "TEX logo" entry.

Page 196l, new entry: true, 41.

Page 196r, the \vfilneg entry, put ")" after "\vfil".

Page 197l, add pp. 116 and 201 to the "\ " (escape space) entry.

Page 201, last line, Chapter 2 should be Chapter 3.

Page 201, new features:
13. You can now use up to 64 different fonts (the 64 codes on page 14 give
64 distinct possibilities).

14. New one-character control sequence feature: If you use \chcode to change
the code of a character to type 13 (see page 32 of the manual... previously
code 13 was illegal), TEX will treat it as if it were immediately preceded by
your escape character. For example, suppose you want to type several
left-justified lines in a row. Here's an "easy" way to do this by redefining
code '15 (which is a carriage-return):
	\chcode'15←13 \def
	{\par}
	the first line
	the second line
	\chcode'15←5
The effect will be the same as
	the first line\par
	the second line\par
after which carriage-returns are back to normal again. Similarly, \chcode'40←13
will change spaces into escape-spaces.

Actually there is one important difference between single-character control
sequences and ordinary ones: Blank spaces are not ignored after
single-character control sequences. (TEX is in "state M" after reading them,
cf. pp. 30-31.)

15. \leqno is analogous to \eqno except that the equation number is placed at
the left.

16. If you see "\ETC" at the end of a token list being displayed by TEX
(e.g., an <argument> in an error message), that token list is more than 500
characters long. This number 500 can be changed using \chpar10←<desired value>.

TEX 80: the last extensions to TEX before 1990

Here are some new primitives that seem to enhance the macro-writer's job, as
well as some final cleanups being made to the language before it is frozen
and widely described in PASCAL implementation.

1. \font <fontcode>=<filename>	AN INCOMPATIBLE CHANGE!
(Allowed in any mode.) This should precede your first use of that font code.
For example,
	\font a=cmr10
now appears in file basic.tex. If this font code has already been defined,
TEX will give an error message unless the file name is the same. (In the SAIL
versions of TEX, no error message will be given if this is a pre-loaded font
code, because the SAIL runtime routines forget all strings at the beginning
of the program and TEX doesn't know the names of the preloaded fonts. Thus you
must still be careful not to redefine the font codes used in Appendix B.)

You should still use \: to select the current font, since \font doesn't do
that.

If you refer to a font code (with \: or \mathrm, etc.) that has not yet been
defined, the error message "! Undefined font code." occurs. To recover, TEX
will expect to see a font file name (possibly preceded by = or ←); so you
can just hit carriage-return after this error message if you want the old
(pre-\font) conventions of TEX.

2. \copy <digit>
(Allowed wherever TEX expects a <box>.) This is just like \box <digit> except
that the value of \box <digit> is not reset to null. For example,
	\save1\copy0
makes \box1 a copy of \box0.

3. \unbox <digit>
(Allowed in vertical or horizontal mode but not math or display math mode.)
The contents of \box <digit> are "unglued" and appended to the current vertical
or horizontal list. In horizontal mode, the space factor is set to 1; in
vertical mode, no baseline correction will be made to the following box. The
contents of \box <digit> are reset to null. For example,
	\save1\hbox{\unbox1\box0}
appends \box 0 to the previous contents of \box 1 and destroys \box 0.
Note: You can't \unbox an \hbox in vertical mode or a \vbox in horizontal mode.

The potential uses of \unbox to produce multi-column format with balanced
columns are somewhat frightening--they might open Pandora's box.

4. \open <digit>=<filename>
(Allowed in any mode.)
This specifies a file to which your TEX program will be able to send characters
as output. Up to ten such files may be open at once. If the <digit> you specify
was previously used to open a file, that file will be closed immediately, so
be careful. The purpose of \open is to enable nice macro packages to be written
for indexes, tables of contents, cross-references, etc.

5. \send <digit>{<mark text>}
(Allowed in any mode.) As with \mark, all macros in the given text will be
expanded when TEX first sees this \send instruction, but \counts are not
expanded, nor are the names of control sequences following \def or \xdef or
\gdef. The text will eventually be written on the open file corresponding 
to <digit> (or on your terminal and on errors.tmp if no such file is open),
at the time of output;  at that time, \counts and \topmarks, etc. are expanded.
For example, suppose you say
	... Let us define a tree{\send 5{Tree, \count0.}} as ...
in some paragraph. The text "Tree, \count0." is invisibly attached to the word
"tree"; and if \count0 equals 25 when the formatted page containing this word
is output, the string "Tree, 25." will be sent (followed by <carriage-return>
and <line-feed>). If TEX control sequences appear in the text to be output, the
result is the same as you get when lists of tokens are displayed in TEX
error messages.
	Here's another example. Suppose you have said
		\open 5=refs.tex
and at some later point you say when \count3 = 21
	\xdef\cv{\count3}
	\send 5 {\def\tarj{\cv}}
	\advcount3
The result is to send "\def \tarj {21}" to file refs.tex, and to advance
\count3 to 22. Your input file could say "\input refs" near the beginning; then
the next time to TEX your file, a reference like "[\tarj]" will become "[21]".
The actual sending takes place when the page containing the \send gets output;
in this case \xdef was used to send the value of \count3 before it advanced.

6. \ifdimen <dimen> <relation> <dimen> {<true text>} \else {<false text>}
(Allowed in any mode.) Here <relation> is any of the three symbols <, >, =.
For example,
	\ifdimen .5wd3 > 2em{a}\else{b}
yields "a" if half the width of \box3 exceeds two ems in the current font,
otherwise it yields "b".

7. \parval<number> and \codeval<number> 
can be used whenever TEX is expecting a <number>; they specify the current
value of a TEX parameter or code (the values that are changed by \chpar and
\chcode).

8. \linebreak in horizontal mode forces a line break but not a page break
(so it's like half of \eject). \pagebreak in horizontal mode forces a page
break after the line that contains it, but not a line break (so it's like the
other half of \eject).

9. \let <control sequence> = <control sequence>
(in any mode) makes an alternate name valid for the present meaning of the
control sequence on the right. For example,
	\let\usefont=\:
makes it possible to redefine the control sequence \: (for example if you want
to use : as a one-character control sequence). And
	\let\finishpar=\par
	\def\par{\finishpar\hangindent 40pt}
sets up hanging indentation after all paragraphs (including those terminated
by double-blank lines).

10. \mskip <dimen> [plus <dimen>] [minus <dimen>]
in math mode gives glue that varies with the current style. The dimensions
must be given in terms of a new unit "mu" that is allowed only with \mskip.
One mu is 1/18 of a \quad in the current style. Thus, for example,
	\mskip 5mu plus 5mu
gives the spacing of a "thick space" in display style (cf. p. 81).

11. New parameters for things that used to be frozen into the code: 
	\chpar11="radsign", the 18-bit code that will be used for \sqrt
		(same format as used in \left\char, see p. 79). Default
		is '560760.
	\chpar12="rfudge", 1000 times the magnification factor used in
		computing "true" dimensions. Default is 1301 (XGP),
		1100 (Dover), 1000 (at Stanford when we get rid of the XGP).
		The output routine might also look at this parameter to scale
		the output, although this isn't implemented yet and the desired
		scale will probably be indicated by a spooling command in most
		cases.
	\chpar13="adjpen", penalty for adjacent lines being more than one step
		apart in the sequence (shrunk at least 50%, near normal,
		stretched at least 50%, stretched at least 100%). As in the
		case of double-hyphenation (\chpar3), you give the square of
		the desired penalty. Default is 3000.
	\chpar14="loose", causes paragraphs to be set this many lines longer
		than the optimal number (if you want to avoid widow lines in
		straight text), if possible. For example, \chpar14←1 makes
		subsequent paragraphs a line longer; \chpar14←-1 makes them a
		line shorter (if there's a way). Default is, of course, 0.
	\chpar15="jjpar". The new TEX justification routine tries first to
		break lines in a paragraph with no hyphenations, using jjpar
		instead of jpar to ferret out unfeasible breaks. If this fails,
		or if "loose" is nonzero, another attempt is made, trying all
		possible hyphenations, and using jpar. Default is 2. (A high
		value makes TEX accept badly stretched lines before trying to
		hyphenate.)
	\chpar16="uchyph". If nonzero, TEX will attempt to hyphenate words
		containing upper case letters, using the algorithm of
		Appendix H.  Default is 0.
	\chpar17="exhyph". The penalty for breaking after an explicit hyphen or
		dash (see rule e on p54). Default is 50.
	\chpar18,19,20, reserved for communication with special extensions
		in private versions of TEX.

12. New glue parameters in addition to \baselineskip, etc.:
	\specskip <digit>, for any type of glue that you want
		to use often. This glue is accessible in any mode by writing
		\skip <digit>; it saves internal memory space in TEX.
	\spaceskip, if nonzero will be used for spaces instead of the values
		from the current font. If you say \spaceskip .3em plus .4em,
		the meaning of "em" at the time \spaceskip appears is used (it
		won't change when the em changes).
	\xspaceskip, like \spaceskip, but this is the glue used for spaces
		following periods, question marks, exclamation points (i.e.
		space factor 3).
	\parfillskip, is the glue automatically inserted at end of each
		paragraph.  This is the only \...skip parameter that is
		initially nonzero; it is initialized to \hfil. (At paragraph
		end, TEX removes the last item of the current horizontal list
		if it is glue, under the assumption that it was the space that
		is scanned before a blank line or before $$ causes the
		line-breaking routine to start. Then \penalty1000 and the
		current \parfillskip glue are appended.)  By giving this
		parameter nonzero space and controlling its stretchability and
		shrinkability, you can keep the final lines of your paragraphs
		from being too empty or too full.

13. \parshape n i1 l1 i2 l2 ... in ln
	where n is an integer and each ij or lj is a <dimen>, takes precedence
	over hanging indentation (of which it is a major generalization). The
	first n lines of each subsequent paragraph will be of the specified
	lengths and will have the specified indentations; lines after the nth
	will use the specifications for line n. To shut this off, type
	\parshape 0.  (This feature will not work sensibly in connection with 
	displayed equations, since TEX considers a displayed equation as if it
	breaks the paragraph into separate paragraphs.)

Note: A technical paper discussing all these bells and whistles of line
breaking is being prepared by Knuth and Plass for publication in SOFTWARE
Practice & Experience.

14. \spacefactor n, where n is an integer, can now be used in horizontal mode
to set the value of the space factor to n/100. Previously a user had no way to
override TEX's automatic conventions for this number.
Changes since October 1, 1980 (when a hardcopy version of this ERRATA file
was printed by AMS):

* Page 8, the display at the bottom of the page was lost, it should say \|_|
(note that |_| is the only way I can type that space symbol in this file).

* Page 19, line -4, change "\vskip 1in" to "\topspace 1in". And change
the wording of page 20 so that it says that \topspace gives you space at the
top of a page, \vskip gives space elsewhere (but \vskip is deleted when it
appears at the top of any page). The control sequence \topspace is now
defined in basic.tex; put "\def\topspace{{\hrule height0pt}\vskip}" in
Appendix B, and make an index entry for \topspace.

* Page 178, a new binary relation \heqv (Hardy equivalence symbol) now lives
in position '067 of the symbols fonts.

* Magnified printing and \chpar12:
It is sometimes valuable to be able to control the magnification factor at
which documents are printed.  For example, when preparing document masters
that will be scaled down by some factor at a later step in the printing
process, it is helpful to be able to specify that they be printed blown up by
the reciprocal factor.  There are several new features in TEX to allow for
greater ease in the production of such magnified intermediate output.

TEX should be thought of as producing as output a "design document":  a
specification of what the final result of the printing process should look
like.  In the best of worlds, this "design document" would be constructed as
a print file in a general and device independent format.  Printing a
magnified copy of this document for later reduction should be viewed as the
task of the printer and its controlling software, and not something that TEX
should worry about.  But real world constraints force us to deviate from this
model somewhat.

First, consider the plight of a TEX user who plans to print a document
magnified by a factor of two on a printer that only handles 8.5" by 11"
paper.  In order to determine an appropriate \hsize and \vsize, this user
will have to divide the paper dimensions by the planned magnification factor.
Since computers are so good at dividing, TEX offers this user the option of
setting the "magnification" parameter to 2000, warning TEX of the anticipated
factor of 2 blow up, and then specifying \hsize and \vsize in units of
"truein" instead of "in".  When inputting a "true" distance, TEX divides by
the scale factor that "magnification" implies, so as to cancel the effect of
the anticipated scaling.  Normal units refer to distances in the "design
document", while "true" units refer to distances in the magnified printer
output.

Secondly, some existing print file format and printer combinations have no
current provision for magnified printing.  A Press file, for example, uses
absolute distances internally in all positioning commands, and Press printers
treat these distances as concrete instructions without any provision for
scaling.  There is a program that takes a Press file and a scale factor as
input and produces as output a new Press file in which all distances have
been appropriately scaled.  But it is inconvenient to be forced to use this
scaling program on a regular basis.  Instead, the Press output module of TEX
chooses to scale up all distances by the "magnification" factor when writing
the output Press file.  Thus, the Press files that TEX writes are not
representations of TEX's abstract "design document", but rather
representations of the result of magnifying it by the factor (\parval12)/1000.
On the other hand, the DVI files written by other versions of TEX containing
normal units of distances, and the software that translates DVI files to
instructions that drive various output devices will do the magnification
by themselves, perhaps even using a magnification that was not specified
in the TEX source program; if the user has not specified "true" dimensions,
his or her DVI output file will represent the design document regardless of
magnification.

Caveat:  Due to the manner in which the current implementation of TEX writes
Press files, it is not permissible to change the value of parameter 12 in the
middle of a TEX run.  If you want to produce magnified output, you should
reset parameter 12 once very early in your document by using the  \chpar12
control sequence, and from then on leave it alone.  Another Caveat below
discusses the situation in more detail.

* Magnified fonts, an extension to \font:
The magnification mechanism has been extended to include font specifications
as well:  in order to print a document that is photographically magnified, it
is essential to use magnified fonts.  A font is specified by the "\font"
control sequence, which now has the syntax
	"\font <fontcode>=<filename> at <dimen>".
The "at" clause is optional.  If present, the dimension specified is taken
as the desired size of the font, with the assumption that the font should be
photographically expanded or shrunk as necessary to scale it to that size
times the magnification factor specified by parameter 12. For example,
the two fonts requested by the control sequences 
	"\font a=CMR10 at 5pt" and "\font b=CMR5 at 5pt"
will look somewhat different.  Font a will be CMR10 photographically reduced
by a factor of two, while font b will be CMR5 at its normal size (so it should
be easier to read, assuming that it has been designed well).

The dimension in a font specification can use any units, either standard or
"true".  The interpretation of "true" here is identical to its interpretation
in the specification of any other distance:  asking for a font "at 5pt"
requests that the font be 5 points in size in TEX's "design document", while
asking for a font "at 5truept" requests that the font be 5 points in size
after the scaling implied by the "magnification" factor.

If the "at <dimen>" clause is omitted, TEX defaults the requested size to the
design size of the font, interpreted as a design (non-"true") distance. 
Thus, the control sequence "\font a=CMR10" is equivalent to the sequence
"\font a=CMR10 at 10pt", assuming that the designer of cmr10 has indeed
told TEX that cmr10 is a 10-point font.

Caveat:  This extension allows the TEX user to request any magnification of
any font.  In general, only certain standard magnifications of fonts will be
available at most printers.  The user of TEX at any particular site must be
careful to request only those fonts that the printer can handle. 

Caveat:  As mentioned above, you shouldn't change the value of parameter 12
in the middle of a run.  TEX uses the value of parameter 12 in the following
three ways:  (i) Whenever the scanner sees a "true" distance, it divides
by the current magnification.  (ii) At the end of every page, TEX's output
module may scale all distances by the current magnification while converting
this page to format for an output device.  (iii) At the very end of the TEX
run, the output module uses the current magnification to scale the requested
sizes of all fonts.  Given this state of affairs, it is best not to change
parameter 12 once any "true" distance has been scanned and once any page
has been output.

* Page 40,  there are two new units of distance:
	bp	"big point"  (one inch equals exactly 72 "big points")
	mi	mica  (one millimeter equals 100 micas)

* A new feature to solve the `first footnote on a page' problem at last!
	\topsep{<restricted vertical mode stuff>}
and	\botsep{<restricted vertical mode stuff>}
will insert their `stuff' between all \topinserts or \botinserts on a page
and the text on that page, unless no insert is present. For example,
suppose a page has two \topinserts and one \botinsert, then you get
	\topinsert # 1
	\topskip glue
	\topinsert # 2
	\topskip glue
	\topsep
	the text of the page
	\botsep
	\botskip glue
	\botinsert # 1.
A \topsep or \botsep specification is global and must appear in
unrestricted vertical mode.

* Page 139, change lines -15 and -16 to read:
! Argument of <control sequence> has an extra }.
Some argument to the specified macro has more }'s than {'s. Proceed, and

* Page 198, line 14, change "[1,3]" to "[TEX,SYS]"

* You can \unskip in restricted vertical mode as well as horizontal mode.

* The hyphenation algorithm has been improved. On page 180, line -11,
change "350" to "310"; later on in that paragraph change "in-form-ant"
and "in-for-ma-tion" to "ex-press-ible" and "ex-pres-sion", respectively.
(Since some dictionaries accept "in-for-mant", it is no longer an exception!)

The suffix removal rules at the bottom on page 180 should now read:
A permissible hyphen is inserted if the word ends with -able or -ably (unless
preceded by c, f,g, p, r, et, it, ot, tt, or ut), -ary (preceded by ion),
-cal,  ..., -nary (unless preceded by io), -ogy, ...

Change line 7 of page 181 to read:
"is preceded by three or fewer letters, break -ing only if one of the preceding
letters is a vowel. Otherwise if ing"

Insert -ably between -able and -ary on line 13.
Insert f between c and h on line 20.
Change "l, or m" to "l, m, p, s, or v" on line 24.

The exception dictionary is now extensively changed; the new exceptions will
not be listed here. On page 186 line 8, "been also" should say just "also".

* What was mistakenly called \varomega will henceforth be called \varpi.
This affects page 61 (where \pi will also replace \omega in the example),
page 177, and the index entry on page 196.

* I might include the followng quote from George Bernard Shaw in the next
edition of the user manual, near page 99:
       "The only thing that never looks right is a rule.
	There is not in existence a page with a rule on it that
	cannot be instantly and obviously improved by taking that rule out."
		in The Dolphin 4 (1940), p. 81.

* Various TEX constructions use words that are not control sequences, namely
	after at by depth expand for height minus par plus size to width
and dimensions like pt, em, etc. Such words will now be recognized if they
use uppercase letters (e.g., \hbox Par SIZE{\hskip 1EM PLUS 3dD}).

* The dimension "cc" (one cicero = 12dd) is now allowed, it's big in Europe.

* Replying with "form feed" to an error message is like "line feed" except more
drastic: Nothing will stop TEX from then on until completion of the run.
(There will be no more "*" or "↑" prompts, and tracing won't pause either.)

* \dpenalty is now allowed in display math mode. It specifies the penalty for
a page break before the glue that follows this display.

* ! Input page ended on different nesting level (n).
This is a new error message, indicating that some page of a file has n more
{'s than }'s (more precisely, that the level of nesting at the end of
the page was n more than it was at the beginning of the entire file).
You probably should insert n forgotten `}' symbols (if n is positive),
or |n| forgotten `{' symbols (if negative), before continuing, so that the
balance is restored.

* \mark is now allowed in horizontal mode

* An optional space can precede { in contexts where { is required, e.g. \if AA {.

* Glue and penalties at the top of a page will be deleted after marks and sends

* ! Incomplete if.
This new error message means that \if is being applied to something other than
two characters (e.g. \if \hsize ...). Proceed, the \if will be ignored.

* \xleaders and \cleaders are new kinds of nonaligned leaders. Suppose the space
to be filled by leaders has length s and the box that fills it has size b. Then
if b goes at most q times into s, you get either q or q-1 appearances of the box
when you use TEX's \leaders. With \xleaders and \cleaders you always get q copies
of the box, but they don't necessarily line up with other leaders on the page.
Let r=s-qb be the remaining space. Then \xleaders (expanding leaders) puts
r/(q+1) of the extra space between each box and at the ends; \cleaders (centered
leaders) puts r/2 of the extra space at each end and butts the boxes tightly
together.

* Incompatible change to typewriter fonts (page 171 of the manual):
The characters in positions '175 and '176 have switched places.

* You can now use most single characters where TEX expects a <number>; the
result is the ascii code of that character. (This extension was permitted
for letters in a previous notice in this errata file. Now it is permitted
also for characters of type "otherchar" as well (see Chapter 7), as long as
the otherchar is not a digit or a ' mark or a + or - sign or a . that might
precede a digit. For example, "\chcode }=2" is now a good thing to say in the
file BASIC.TEX. Other characters can be used too except in cases where the
scanner pre-empts them (namely, escape characters, end-of-line characters,
ignored characters). A new error message is given if no legal number is
present: "! Improper number, 0 inserted." (Previously, 0 was inserted
without warning.)

* To test whether two control sequences are equal, say
	\ifx <cs1><cs2>{<true text>}\else{<false text>}
For example, "\ifx\foo\bar{yes}\else{no}" will give "yes" if \foo has been
defined to be the same as \bar, using \def or \let. This means the definition
really is the same, not that it ultimately expands the same.
Examples: Consider the definitions
\def\foo{abc} \gdef\bar{abc} \def\bah{\bar} \xdef\blah{\bar}
\def\empty#1{} \def\empt{} \let\emp=\empt \let\goo=\ifx
and suppose that \und and \new have never been defined. Then
	\ifx\foo\bar is true
	\ifx\bar\bah is false
	\ifx\foo\blah is true
	\ifx\und\new is true
	\ifx\und\empty is false
	\ifx\emp\empt is true
	\ifx\emp\empty is false (since the parameters are different)
	\ifx\ifx\goo is true
	\ifx\emp\def is false
	\goo\emp{} gives "! Two control sequences must follow \ifx."
This feature can be used to tell if a control sequence has been defined.
(For example, if definitions are read from a cross-reference file, that
file is empty on the first iteration, so a cross-reference macro needs to
do something different the first time.) It has also proved useful for making
indexes (recognizing when two strings of characters are equal, so they
specify the same index entry).

* New changes to the Computer Modern Fonts have caused the TEX logo to
change a bit. Here is the recommended control sequence (for page 102):
	\def\TEX{\hbox{\:aT\hskip-.125em\lower.5ex\hbox{E}\hskip-.075em X}}

* Position '167 in cmsy fonts is now occupied by a diamond operator that
goes with the circle and bullet. It's called \diam.

* When responding `?' to an error, you now get a different help-message:
	Type c or C to continue, s or S to scroll all error messages,
etc. So you can get these effects without control codes on various terminals.
The old <cr> (continue) and <lf> (scroll) still work. There's also <ff> or
f or F, which sets up nonstop mode; the latter scrolls errors and doesn't
pause for any reason. On TOPS20, you can get into nonstop mode by typing
a slash at the end of your command line (e.g. "@tex foo/"). Nonstop mode is
intended for overnight batch processing.

* Wizards who try to do weird things with horizontal and vertical lists
need one more feature, which DEK promises is the last feature to be added
before TEX becomes frozen and solid. A new type of box specification is allowed:
If you are in (possibly restricted) horizontal or vertical mode, and if the
last thing in the current horizontal or vertical list is a box, 
"\thebox" denotes this box, and removes it from the list. Otherwise \thebox
denotes nothing. For example, if \box1 contains two boxes separated by
glue, you can pick it apart by saying 
	"\unbox1 \save2\thebox \unskip \save1\thebox".

* Slight change to \halign and \valign: Each column after an \halign
now has the height and depth of the entire row, and each row after a \valign
now has the width of the entire column. This new interpretation (which is
the way alignment always should have worked!) doesn't change anything except
horizontal and vertical rules that extend to the edge of their containing
boxes. As a result, it is MUCH easier to make vertical rules in \haligned
tables. (But one should still use \baselineskip 0pt and \lineskip 0pt and
some form of strut to avoid gaps between the lines.)

* A new type of dimension is now allowable in the "plus" and "minus" parts
of glue specifications, namely "fil", "fill", and "filll". For example,
\hfil and \hfill are respectively equal to \hskip 0pt plus 1fil and
\hskip 0pt plus 1fill; \hss is the same as \hskip 0pt plus 1fil minus 1fil.
In the present TEX, the respective meanings of fil, fill, and filll are
10↑5, 10↑10, and 10↑15 points. However, next year's TEX will treat these
as infinity, infinity↑2, and infinity↑3, and the coefficients of powers
of infinity will be limited in absolute value. Therefore, for compatibility,
present users of TEX should not include large amounts of stretch and shrink
in glue specifications unless they use the new "fil" feature. TEX will
give you a warning message suggestion that you use `fil' if the magnitude
of a stretch or shrink component exceeds 32767pt. For example, if you have
a TEX program that says "\topspace 10pt plus 100000pt", you should change
it to "\topspace 10pt plus 1fil" to avoid the warning message.
See the next page of this file for further details about next year's TEX.
This page describes differences between TEX82, which is the portable
standard definition of TEX in PASCAL, and the TEX systems written in SAIL.
(The SAIL version will NOT be brought up to date to make it compatible with
TEX82; its use should gradually die away as more people take advantage of
the new features available in the PASCAL version.)

NOTE: TEX82 is still being implemented, and the changes are therefore
continuing to accumulate. The list below is being published in TUGboat,
and it is some 600 lines long, so all corrections made subsequent to
February 12, 1982 are being put into a separate file CHANGE.TXT[pas,dek].

* TEX82 does all its calculations that affect line breaking and page
breaking using fixed-point integer arithmetic of limited (i.e., 32-bit)
precision, instead of with floating-point computations, since different
machines differ so widely in the results you get with floating point.

Dimensions are integers in units of 2↑(-16) points, limited in magnitude
to 2↑14 points (which is 18.89 feet).  This applies to all dimensions
(e.g., the heights and widths and depths of boxes, the amounts by which
you \raise or \lower a box, \varunits, etc.), except for the dimensions
of stretching and shrinking. 

Something different had to be done with respect to the dimensions of stretching
and shrinking, since for example the old TEX defined \hfill to be a stretch
of 10↑10 points, and that number has more than 32 bits to the left of its
binary point. After considering various alternatives, the solution introduced
by the designers of MESA-TEX in 1979 has been adopted for TEX82. Each
stretch or shrink dimension is specified by a fixed point integer that is
either in units of 2↑(-16)pt or 2↑(-16)fil or 2↑(-16)fill or 2↑(-16)filll.
Here pt is, of course, one point; the other units are three orders of
infinity, essentially infinity and infinity↑2 and infinity↑3. To add together
such units of stretching or shrinking, one simply adds the individual
components having the same order of infinity, and then uses the nonzero
component having the highest order. 

Thus, when one says "\hskip <a>pt plus <b>fil minus <c>filll", the numbers
<a>, <b>, <c> are rounded to the nearest multiple of 2↑(-16), and their
magnitudes should be less than 2↑(15). The stretch component is
<b> times infinity, and the shrink component is <c> times infinity cubed.

* The shrink component of all glue used in a paragraph should be finite.
Something like "\hskip 20pt minus 2fil" actually makes no sense in a paragraph,
since the paragraph would fit on a single line no matter what. Infinite
shrinkage does make sense in a simple \hbox, of course.

* Identifiers for control sequences in TEX82 are letter strings of any
length, with upper and lower case letters treated as distinct even when
they aren't the first letter. For example, \TEX is not the same as \TeX,
and \GAMMA is not the same as \Gamma.  Any character that is regarded as a
letter (this means the 52 letters, initially, plus others that are
\chcoded to 11) can appear in such control sequences. Of course, the
one-character non-letter control sequences still exist as well.

* Font codes (which appear after \font or \: or \mathrm, etc.) are allowed
to be any nonnegative numbers, up to a certain limit (e.g. 200). Thus,
\font A is equivalent to \font '101 and to \font 65, because of the
recently added rule that most characters can be used in place of
constants. In this way, TEX82 is not curtailed by a 64-font restriction.

* Both \looseness and \parshape are now reset to their default values after each
paragraph, as \hangindent always was.

* A somewhat more major change: \hangindent parameters for \hbox par should
now be given outside the box instead of inside. Namely, one should now say
	\hangindent 15pt\hbox par 200pt{...}
instead of
	\hbox par 200pt{\hangindent 15pt ...}
as the old manual states. In olden times you had to give all other aspects of
\hbox par outside (e.g., the baselineskip, parshape), so the new conventions
are more consistent.

* An even more major change: \chpar has been abolished. In its place, all
of the integer parameters have names instead of numbers. (Thus at last they
become consistent with the dimension parameters \hsize, etc., and with the
glue parameters \baselineskip, etc. My only excuse for bad design in the
first place was that the integer parameters were afterthoughts, stuck in
after TEX was first up and running; it was the easiest way to vary some
of the originally fixed constants. I wanted to finish TEX in a year and
get on to writing Volume 4! That is still my wish.) The main effect of this
change is to delete a few definitions from basic.tex and other macro packages.

Here are the names of the integer parameters:
\tracing	(formerly \chpar0=)	diagnostic output
\jpar		(formerly \chpar1=)	badness tolerance after hyphenation
\ipar		(formerly \chpar15=)	badness tolerance before hyphenation
\hpen		(formerly \chpar2=)	hyphenation penalty
\penpen		(formerly half of \chpar3=) penultimate line hyphenation penalty
\dhpen		(formerly half of \chpar3=) double-hyphen penalty
\wpen		(formerly \chpar4=)	widow line penalty
\bpen		(formerly \chpar5=)	broken line at page end penalty
\binoppen	(formerly \chpar6=)	math binary op break penalty
\relpen		(formerly \chpar7=)	math relation break penalty
\ragged		(formerly \chpar8=)	raggedness ratio
\disppen	(formerly \chpar9=)	penalty for breaking before a display
\radsign	(formerly \chpar11=)	radical sign
\mag		(formerly \chpar12=)	1000 x magnification ratio
\adjpen		(formerly \chpar13=)	adjacent incompatibility penalty
\looseness	(formerly \chpar14=)	change in paragraph length
\uchyph		(formerly \chpar16=)	uppercase hyphenation
\exhyph		(formerly \chpar17=)	explicit hyphenation penalty
\day		(new)			initialized to current day of month
\month		(new)			initialized to current month of year
\year		(new)			initialized to current year
\time		(new)			initialized to minutes since midnight
\parinspen	(new)			see below

The former \chpar10 (dump window) is no longer needed, since TEX82 has better 
ways to display token lists. The former \chpar18, \chpar19, \chpar20, once
"reserved for extensions", are gone too, since it is now best for a TEX extender
to give names to whatever new parameters are needed. Similarly, \x is gone.

* The new \jpar and \jjpar are devalued by a factor of 100 from the old ones.
In other words, the default is now \jpar 200 and \jjpar 200, so that it is
a true "badness tolerance", i.e., the badness should not exceed 200. Any
value of 8128 or more is equivalent to an infinite value, in which glue
can stretch arbitrarily far. 

* Furthermore, \codeval and \parval are eliminated. In their place is a
much more powerful operator called \the. For example, what used to be
"\codeval5" is now "\the\chcode5"; what used to be "\parval2" is now
"\the\hpen". You can even say "\the\:" to get the current font number,
"\the\hsize" to get the current \hsize as a dimension, "\the\baselineskip"
to get the current \baselineskip as a glue value; and you can say things
like "\vbox to \the\baselineskip", which makes a vbox whose height is the
normal amount of baselineskip (exclusive of stretching and shrinking).
If \the occurs in an \xdef or in text or in a send stream message, it
gets expanded (analogous to \count, but there's no use of roman numerals).
Indeed, to suppress conversion of negative \counts to roman numerals you
can now say \the\count.

* \thebox is changed to \lastbox (avoids confusion with \the).

* \minus is like \the, but gives the negative value.

* An array of ten dimension values is introduced, called \dimen0 to \dimen9.
These join \count0 to \count9 and \skip0 to \skip9, so we now have ten of
each basic quantity. Furthermore `3.5dm8' is a dimension equal to 3.5 times
\dimen8.

*Operations on \count, \dimen, and \skip are extended, so that we now have
a complete set:

	\setcount <digit> = <number>
	\advcount <digit> by <number>
	\multcount <digit> by <number>
	\divcount <digit> by <number>

	\setdimen <digit> = <dimen>
	\advdimen <digit> by <dimen>
	\multdimen <digit> by <number>
	\divdimen <digit> by <number>

	\setskip <digit> = <glue>
	\advskip <digit> by <glue>
	\multskip <digit> by <number>
	\divskip <digit> by <number>

Note that \specskip has changed its name to \setskip. The division operations
truncate towards zero.

* In fact, all the things that used to be 0 to 9 are further extended: they
can run from 0 to 255. This applies to \count, \dimen, \skip, \send, and \box.
BASIC.TEX will contain macros for allocating a new \count or \dimen, etc.

* The = sign in \setcount, \setdimen, \setskip, \chcode, \font, \open, \let,
and in other similar things, is now optional. Furthermore an equals sign
is optionally allowed now after \jpar, \hsize, \baselineskip, \setbox
(the new name for \save), etc.

* If you put \global in front of \def or \let or \chcode or \jpar or
\baselineskip or even \: and \parshape and \hangindent, the definition will
now be global. Otherwise the definition is local (except for \gdef and \xdef).
This is a change in the case of dimension parameters:  \varunit,
\parindent, \lineskiplimit, \mathsurround, \maxdepth, \topbaseline,
\hsize, \vsize; you should put \global in front of these to get the former
behavior. You probably wanted the former behavior only when changing
\hsize or \vsize in an \output routine.

* \edef is a local \xdef. Both \edef and \xdef can now take arguments
like \def and \gdef.

* Two other modifiers can be placed in front of \def, \gdef, \edef and \xdef:
	\long means that the arguments to the macro are allowed to contain
		\par tokens; formerly this was always allowed, but now it
		is permitted only for "long" macros. Otherwise TEX will now
		stop when it sees \par going into an argument, presuming
		that a right brace was forgotten. This detects one of the
		most frequent errors made by TEX users, before it propagates
		to overflow the memory.
	\outer means that the macro being defined is not allowed to appear
		subsequently either in an argument or in the right-hand side
		of a definition or send text, or in the preamble of an
		alignment. In other words, the macro should appear only at
		"quiet" times. This is another way to catch missing braces
		before too much damage is done. It used to be applied at the
		end of 	every page, but most TEX users don't use a page-oriented
		editor like E; therefore TEX82 does not treat file pages as
		an integral part of its control structure.

* \groupbegin and \groupend provide an alternate way to enter and leave
groups for locally defined values. A \groupbegin will not match a },
nor will { match \groupend; the former gives the message "Missing \groupend
inserted" when the } occurs, and the latter inserts a "missing" }. Note
that you can introduce \groupbegin in one macro and \groupend in another.

* If you say \message{text}, the terminal will display " text" immediately.
For example, the new version of BASIC.TEX contains three message statements
so that when you \input basic your screen will look something like this:
	(basic.tex macros fonts layout)
instead of "(basic.tex 1 2 3 4)". (However, one hardly ever needs to
say \input basic any more, as explained below.)

Here's an example macro that displays names of sections when you get to them
in a paper you are TEXing:
  \outer\def\section#1{\vfill\eject\message{#1}\ctrline{\bf#1}}

* You can also say \errmessage{text}, which causes a TEX error message like
	! text.

* \mathcode<n> replaces \chcode <n+128>.

* The internal character set used by TEX82 is the same regardless of the
external character set. There is no longer a difference like
"\chcode'176" for right brace that applies only at SAIL! Right braces
and underlines and tildes and notequals and a few others have been a
source of problems that have now gone away. Furthermore there is now a
way to input an ascii control character to any version of TEX82 by typing,
e.g., ↑↑A.

TEX82 assumes that all of the standard ascii characters, shown in positions
040 through 176 below, are available; these characters are always converted
to their standard ascii codes. For example, a TEX user who types A is asking
for character 65 of the current font, even though the A might have entered the
computer in EBCDIC or some other code. Non-standard-ascii characters might
also be readable on some implementations of TEX. In such cases they should
have the significance stated below, for best results; and all characters that
cannot be converted to a compatible TEX code should be converted to 177.
	ascii	TEX	description	chcode	mathcode (when TEX starts)
	000	↑↑@	null		ignore	bin401
	001	↑↑A	downarrow	submark	rel443
	002	↑↑B	alpha		other	ord213
	003	↑↑C	beta		other	ord214
	004	↑↑D	and		other	bin536
	005	↑↑E	not		other	ord472
	006	↑↑F	epsilon		other	ord217
	007	↑↑G	pi		other	ord231
	010	↑↑H	backspace,lambda ignore	ord225
	011	↑↑I	tab,gamma	space	ord215
	012	↑↑J	linefeed,delta	ignore	ord216
	013	↑↑K	uparrow		supmark	rel442
	014	↑↑L	formfeed,+/-	endline	bin406
	015	↑↑M	carriage-return	endline	bin410
	016	↑↑N	infinity	other	ord461
	017	↑↑O	partial		other	ord245
	020	↑↑P	subset		other	rel432
	021	↑↑Q	superset	other	rel433
	022	↑↑R	intersection	other	bin534
	023	↑↑S	union		other	bin533
	024	↑↑T	for-all		other	ord470
	025	↑↑U	there-exists	other	ord471
	026	↑↑V	circle-times	other	bin412
	027	↑↑W	doublearrow	other	rel444
	030	↑↑X	leftarrow	other	rel440
	031	↑↑Y	rightarrow	other	rel441
	032	↑↑Z	notequal	other	rel434
	033	↑↑[	escape,diamond	action	bin567
	034	↑↑\	less-or-equal	other	rel424
	035	↑↑]	greater-or-equal other	rel425
	036	↑↑↑	equivalence	other	rel421
	037	↑↑_	or		other	bin537
	040		space		space	ord464
	041	!	exclamation	other	close041
	042	"	double-quote	other	close042
	043	#	hashmark	param	ord561
	044	$	dollar-sign	math	ord577
	045	%	percent-sign	comment	ord045
	046	&	ampersand	align	ord046
	047	'	apostrophe	other	close047
	050	(	left-parenthesis other	open050
	051	)	right-parenthesis other close051
	052	*	asterisk	other	ord052
	053	+	plus-sign	other	bin053
	054	,	comma		other	punct054
	055	-	hyphen,minus-sign other	bin400
	056	.	period		other	ord056
	057	/	slash		other	ord057
	060	0	zero		other	ord060
	   . . .
	071	9	nine		other	ord071
	072	:	colon		other	rel072
	073	;	semicolon	other	punct073
	074	<	less-than-sign	other	rel074
	075	=	equal-sign	other	rel075
	076	>	greater-than-sign other	rel076
	077	?	question-mark	other	close077
	100	@	at-sign		other	ord574
	101	A	uppercase-A	letter	ord301
	   . . .
	132	Z	uppercase-Z	letter	ord332
	133	[	left-bracket	other	open133
	134	\	backslash	control	bin404
	135	]	right-bracket	other	close135
	136	↑	caret		supmark	ord017
	137	_	underline	submark	ord465
	140	`	reverse-apostrophe other open140
	141	a	lowercase-a	letter	ord341
	   . . .
	172	z	lowercase-z	letter	ord372
	173	{	left-brace	open	open546
	174	|	vertical-line	other	ord552
	175	}	right-brace	close	close547
	176	~	tilde		other	rel430
	177	↑↑?	invalid		invalid	ord573

As before, the mathcodes (which replace Appendix F8 of the old TEX manual)
are relevant only when the chcode is letter or other. (See below for the
new chcode values.) Two possibilities are given for codes 010, 011,
012, 014, 033, 055; at most one of these should be chosen, and if both are
present on some system keyboards the other should probably be disallowed for
TEX input (mapped into 177). However, since a user can change any chcode and
any math chcode, strict conformity with these interpretations isn't absolutely
necessary. To convert a file into a format that all TEXes can read, one
should change null into ↑↑@, downarrow into ↑↑A, and so on. If a character
set contains uparrow but not caret (e.g., the SAIL system falls into this
category), the uparrow should be considered an ascii caret; code 013 will
be used only if both uparrow and caret are present, as they are at MIT.
Incidentally, this internal coding scheme is based on a scheme used at MIT,
since the MIT code is faithful to ascii while allowing additional visible
characters that are extremely convenient.

An appearance of ↑↑A is equivalent to an appearance of ascii code 001, if
the current chcode of ↑ is supmark. In particular, if somebody in a
foreign country with more than 26 letters in the local alphabet wants to make
\chcode ↑↑A = letter, then control sequences like \a↑↑A↑↑Ab (a four letter
word) are permissible.

TEX82 puts 015 (ascii carriage-return) at the end of each line, except for
the lines that are inserted with "i" after error messages. If the final
character of the line is currently chcoded to be an escape character
(e.g., if you end an error-insertion with \, or if you do \chcode'15=0),
the result is control-null, which is an undefined control sequence unless
you define \↑↑@.

Of course, users are expected to type \ne instead of ↑↑Z if their system's
character set doesn't contain a not-equal sign; TEX82 recognizes ↑↑Z as
ascii 032 primarily to make it possible for straightforward translation of
TEX files from one system so that they will work on another.

Some files contain ascii 014 (form-feed) characters as page marks. Such
characters are ordinarily treated like carriage-returns, since the initial
chcode for 014 is carret. In order to get TEX82 to do the error checking at
the end of a page, as the old TEX did, you can say
	\chcode'14=13 \outer\def↑↑L{\par}

* A new chcode value 14 denotes a character that is better for comments
than the present code 5. A character of code 14 denotes end of the current
line (i.e., ignore the remainder of that line), without inserting a blank
space, and without considering that line to be all blank.  Thus, if % is
assigned type 14, you can have lines that are completely comments by
starting them with %, without having this line come out as \par; and you
can also end a line with % without having a blank space inserted there.

* Another new chcode value, 15, denotes an invalid character. When such
a character is input, TEX82 issues an error message.

* Here's something that was NOT put into TEX82: It wouldn't be hard to
make TEX understand \escape to mean 0, \opengroup to mean 1, ..., \active
to mean 13, \comment to mean 14, and \invalid to mean 15; then you could
say, e.g., \chcode'14=\active in the example above. But it seems wrong
to make \chcode too easy, since that will only encourage more people to
fiddle with the \chcode table. Let's leave this a black art, to be
resorted to only with reluctance in times of emergency.

* Note that the backslash character is now predefined as an escape character
when TEX82 begins. The old idea about letting the user's first nonblank
character be the escape has been abandoned. Furthermore TEXPRE has been
replaced by a version of TEX called INITEX that allows an entire macro
package to be preloaded; this macro package can define its own chcodes
and mathcodes. The normal version of TEX already has "basic.tex"
preloaded; the normal version of AMSTEX already has the AMSTEX macros
and fonts preloaded.

The new rule for starting TEX is this: If the first nonblank characters
typed are ! or !!, TEX goes into nonstop mode (i.e., no waiting for
terminal input); here !! is "quiet nonstop mode", in which the output
goes entirely to the error-transcript file, not the terminal.
(These nonstop options are intended for overnight batch processing.)
After scanning off the optional !'s, TEX looks at the next nonblank
character. If it is not an escape character, TEX automatically inserts
"\input ". Furthermore, the input may start right on the command line.
Thus, for example, the following ways of starting TEX are equivalent
at SAIL and similar sites:
	tex paper
			r tex;paper
					r tex
					* paper
							r tex
							*\input paper
(The asterisks here are TEX's prompt character. On TOPS-20 what used to
be "@tex paper/", indicating batch mode, is now "@tex !paper".)

* \dump <filename> will save TEX's current memory contents on the specified
file. This is allowed in INITEX only, and only at very quiet times (i.e.,
at group level 0 in vertical mode with nothing on the current page, etc.).
The file name will be printed later when these memory contents are loaded
in a production version of TEX; for example, if you say "\dump BASIC"
on March 1, 1982, the TEX that uses the dumped file might begin with the line
	This is TEX, Version 1 (BASIC 82.3.1)

* Actually the program name TEX now stands only for versions of TEX82 that
have BASIC.TEX preloaded. Other preloaded versions (e.g. AMSTEX) will
usually exist too. If your operating system does not allow a program to
start with its memory preloaded, you will have to call a "virgin TEX"
program VIRTEX that first wants to see the name of a format-dump file (e.g.,
BASIC or AMSTEX).  In this case a typical calling sequence might be
"@virtex basic !paper".  If your operating system is nice enough to allow
preloaded programs, a typical way to create the program TEX would be to
say "@virtex basic" followed by something like "control-C" and "save tex".

* You CAN do certain things now in horizontal mode, e.g., \vfill; TEX82
will silently insert the \par you forgot.

* \discr <number> (analogous to \accent <number>) makes discretionary
characters other than hyphens.

* \close <number> will close a file so that your TEX program can immediately
input it. (Previously you could only do this by, e.g., \open 0=empty0.tmp,
cluttering up the disk with an empty file.)

* \indent takes you from vertical mode to horizontal mode and indents the
paragraph; this can be used if the first item in the paragraph is in an
\hbox or \vbox. You can also use \indent in horizontal mode to stand for
"\hbox to\the\parindent{}". For example, you might say 
	\hbox par 100pt{\indent This paragraph is indented.}

* \↑↑\ and \↑↑] have gone away, to the delight of people who don't have
nice ways to type ascii control characters. Instead, \- in math mode
precedes a space of any other type, making that space zero in subscript
styles. Thus, the conditional thin space is now "\-\,", and conditional
negative thin space is "\-\!".

* \opspace, \thinspace, \thickspace are now definable like other
glue parameters such as \baselineskip. The units should be in mu. For
example, one of the defaults is \thickspace 5mu plus 5mu.
"\ " in math mode is equivalent to "\,". The old "mathspace"
parameter in symbol fonts (see METAFONT manual p99) is no longer used.

* If you end the parameter part of a definition with an additional #,
the argument-matching process will terminate on the next left brace.
For example, in
	\def\chop to #1#{\chopp{#1}}
the call "\chop to 2in{x}" will expand to "\chopp{2in}{x}". The definition
	\def\mac#{why}
will subsequently issue an error message if "\mac" is not followed by "{".

* There's a new way to get up to 4096 more math symbols in all three sizes,
by defining font families 0 to 15. For example, suppose that fonts A, D, and F
are Fraktur alphabets in 10pt, 7pt, and 5pt sizes. Then you can define
"\fontfamily 1=ADF", which is something like the code "\mathrm adf" in
basic.tex. Now if you say "\fam1" in math mode, you get characters from
font A, D, or F, depending on the size. For example, "{\fam1 B↓b}" would
give Fraktur B in 10pt with a subscript Fraktur b in 7pt. The rule is
that a family specification overrides the math chcode for symbols of
type letter and otherchar. If you say "\fam1" in horizontal mode, it is
equivalent to "\:A"; i.e., the largest size is used then. Thus if, say,
\bf is defined to be an appropriate family, you can use the notation "{\bf t}"
both in horizontal mode and in math mode.  And if \rm is defined to be an
appropriate family, e.g., by saying
	\fontfamily 0=adf \def\rm{\fam0}
you can now say, e.g., "\def\max{\mathop{\rm max}}" instead of resorting
to "{\char m \char a \char x}" in order to achieve size-switching. This
extension also makes ligatures and kerning available in math mode.

* The "texinfo" that is given with each font (see Appendix F of the
METAFONT manual) can now be changed by a TEX user program; there was no
way to do this before except by making a new TFM file. Say
	\texinfo <font><parameternumber>=<dimen>
For example, \texinfo a3=4pt sets the stretch component of spacing to 4pt
in font a. (Parameter 1, the "slant", is unitless but you should give its
value in units of points.) You can use this feature to adjust math-mode
positioning of subscripts, etc., by changing the parameters in mathsy
and mathex fonts. Note that texinfo is global, it does not get reset
at the end of a group. You can also say \the\texinfo<font><parameternumber>.

* Bit '40 of the \tracing parameter now means that debugging output goes to
the terminal as well as to the error-transcript file; otherwise it goes only to
the error file. Bit '4 now means that statistics about memory usage will
be printed after each page of output, provided that TEX has been compiled
with the statistics-gathering feature. Bit '1 now turns on a warning about
reference to characters that do not exist in a font; such characters will
not be typeset.

* A new dimension parameter \overlimit specifies the tolerance for printing
a diagnostic message about overfull boxes. If the box is overfull by this
amount or less, no message is printed. Default is ".1pt", which was the
old TEX standard. If you say \overlimit 8000pt, you probably won't see any
overfull boxes. If you say \overlimit 0pt, you will see all of them, including
a few that you didn't know about last year.

* Another new dimension parameter \overfullrule specifies the width of a
rule that is added at the right end of overfull hboxes. This rule has the
height and depth of the box. If \overfullrule is zero or negative, or if
the amount of overfullness does not exceed \overlimit, no rule will appear.
Default is 5pt, which gives a big black mark to help you spot overfull boxes. 

* The "overfull box" warning messages will be given in a new form that
simply gives the characters in the box; for example,
	Overfull box, 3.3326 points too wide (in paragraph of lines 210--216):
	\:a This is the text of a line that was over-full for some rea-son.
Discretionary hyphens are shown as real hyphens, so that you can see what
hyphenation TEX was trying.  The error-transcript file gets both this message
and an old-style description of the overfull box in detailed diagnostic
dump format.

* Another new control sequence, \relax, does nothing at all. Thus, if you
want to disable the action of a control sequence, you can \let it be \relax.

* Up to 256 fonts may be used, and each font may contain up to 256
characters. (Characters numbered 128 to 255 can be accessed either
via ligatures or charlists or with the \char command.)

* \leftskip and \rightskip specify glue to be placed at the left and right
of each line of a paragraph. This provides better ways to do ragged right
setting, and it makes changes to \hsize less necessary.

* \parinsert{stuff} is a new feature intended for long footnotes. It
acts like \botinsert{\hbox par size{stuff}} except that only the first
line of the paragraph is required to fit on the current page. Line breaks
between lines are allowed (with \parinspen added to the other penalties
corresponding to \wpen and \bpen); and if such a break occurs, the remaining
lines are carried over to the following page where they are treated in
the same way (i.e., the first line must appear, but another break could occur).

* \xsend{text} will send the text to the DVI file instead of to a text file.
Thus, the text will be associated with the current position on a page. It is
undefined what the DVI reading programs might do with such text, but local
sites may want to use this feature for such things as inserting halftone
illustrations, or for specifying lines and curves to be drawn. For example,
"\xsend{Halftone Fig1a}" might be used to include a halftone on file Fig1a
with its reference point at the current page position; and "\xsend{Endpoint 3}"
might be used twice in the file, with the meaning that a straight line should
be drawn between the two endpoints. The text must be at most 255 characters
long.

* \unskip is now legal in vertical mode; if the last item in the current
vertical list is glue, it appends the negative of this glue. (In horizontal
mode, \unskip removes the glue, as before.)

* \sqrt signs in TEX82 are positioned differently in their boxes:
The baseline now comes exactly at the bottom of the place where the vinculum
(i.e., the rule over the operand of \sqrt) is to be joined.
This means that no rounding errors will be possible and perfect alignment
will be obtained at all resolutions. Pre-82 versions of TEX will still work
(subject to rounding) if the height of the box is the thickness of the rule.

* There will be new parameters affecting the size of variable delimiters
that TEX chooses for \left and \right. Details are still being worked out.
A new way of using \char to specify variable delimiters is also going to
be introduced in place of the old 18-bit code; this will probably include
some way to use a character from any font family.

* The error transcript files are no longer called "errors.tmp". Your output
file and transcript file will be "paper.dvi" and "paper.err" if your first
line of TEX input specifies \input paper. The default name "texput" is
used whenever no other appropriate name has occurred before TEX reads
line two of its input. (TEX can't wait any longer, since line one has to
be put into the transcript file, and the transcript file has to have a
name before it gets information.)

* If the \moreout command is activated in an output routine, output will
be activated again. Previously there was no way to get more pages of
output than ejects in the file. For example, here is a way to print text
only on odd-numbered pages and to print only the page number on even-numbered
pages:
\output{\ifeven0{\vbox to \fullpageheight{\vfill\ctrline{\:a\count0}}}
	\else{ ... give your normal output routine followed by \moreout ... }
	\advcount0}

* \hyphenation{word list} can be used to override TEX's hyphenation algorithm;
for example, to specify hyphenation of the words "hyphenation" and
"exceptions" one can write
	\hyphenation{hy-phen-a-tion ex-cep-tions}
A new hyphenation algorithm devised by Frank Liang is used in TEX82; this
one extends much more readily to other languages. Words containing ligatures
can now be hyphenated automatically, even difficult words like "difficult".

* If two fonts are specified with the same name and point size, only one
will be loaded.

* \sfcode <char number> is the spacefactor code for that character, times 1000.
For example, the spacefactor code for period and question mark is normally
3000, for comma 1250, for right parenthesis 0 (meaning do not change the
space factor), and for most characters it is 1000. In TEX82, you also say
"\spacefactor 1234" instead of "\spacefactor 1.234".

* \uccode <char number> is the character code to use when converting to
upper case in the \uppercase function. For example, \uccode a = A.
(Probably nobody will change the default values unless a foreign alphabet
is being used.)

* \lccode <char number> is the character code to use when converting to
lower case in the \lowercase function or when trying to hyphenate a word
that contains upper case letters. For example, \lccode A = a.

* TEX82 has a new "help" facility available on error messages. If you type
"h" after an error, you will (usually) get further explanation of what
the error means, together with suggestions about how to proceed.
IMPORTANT NOTE ABOUT A CHANGE TO BASIC.TEX

Since most of the rest of the world doesn't have the SAIL character set,
they can't use the special codes we do. Therefore the new TEX manual
will not be able to use circle-times (⊗) as the tab mark, and instead
the ampersand character (&) will be adopted for that purpose. (This
convention is already in wide use outside of Stanford.)
Furthermore, the normal character for subscripting will be underline (_),
although the manual will continue to show it as ↓.

With these two changes, TEX will be able to live entirely in the ascii
world. What does this mean to us at Stanford? Only one thing that is
incompatible with what we have been doing:
	We shouldn't use the character & by itself to stand for an
	ampersand in the current font.
Instead, the control sequence \& should be used.

For example, if you now have a file that refers to
	Software---Practice & Experience
you should change that to
	Software---Practice \&\ Experience
(noting that a \ should come both before and after the ampersand).

The file BASIC.TEX has been changed so that \& will give you the
ampersand sign, as \% gives you the percent sign. Please change
your files now to use this feature, because it won't be long before
BASIC.TEX changes again to DISALLOW the old use of &. If you try
& after the NEXT change, you'll get an error message "! There's no
\halign or \valign going on."